이스트캠프 Spring 퀴즈 3

📘 오늘 학습한 내용

1️⃣ REST API

2️⃣ Thymeleaf


📝 퀴즈

🧩 퀴즈 1

Q. Spring에서 @Controller와 @RestController의 차이는?

📝 나의 답변:

Controller는 메서드들이 HTML이나 JSP 파일을 반환하고, 
RestController는 `@ResponseBody`를 포함하고 있어 문자열이나 데이터를 반환합니다.

✅ 피드백:

- Controller : View(HTML, JSP, Thymeleaf 등)를 반환한다.
- RestController : Controller + ResponseBody
- 반환 시 데이터 자체를 HTTP 응답에 그대로 출력한다.
- 데이터가 중점인 API를 만들 때 사용한다.

🧩 퀴즈 2

Q. application.properties 파일에서 서버 포트를 8081로 바꾸기 위해 설정해야 할 속성 이름은?

📝 나의 답변:

server.port

✅ 피드백:

server.port=8081

🧩 퀴즈 3

Q. @GetMapping("/hello")가 붙은 메서드가 실행되기 까지 Spring MVC 동작 흐름은?

✅ 피드백:

1. 클라이언트 요청 수신
2. DispatcherServlet에서 요청을 처리할 Controller 탐색
   (HandlerMapping에서 Controller를 탐색)
3. Controller의 요청 메서드 실행
4. Controller 메서드에 맞는 Model 데이터 생성(DAO, DB Connection)
5. Controller가 Model 객체 데이터를 ViewResolver에 전달
6. ViewResolver는 데이터와 View 이름 정보로 실제 템플릿 파일을 탐색
7. View 렌더링
8. 클라이언트가 화면 확인

🧩 퀴즈 4

Q. RESTful API 란 무엇이고 만들 때 지켜야 할 설계 원칙은 어떤 게 있나요?

📝 나의 답변:

REST 원칙 : 자원을 정의하고, 자원의 주소를 지정하여 표현하는 방식의 모음입니다.

✅ 피드백:

- REST : 네트워크에서 자원을 정의하고, 
자원에 대한 행위(전송, 처리 등)를 표현하는 아키텍처다.
- RESTful API : REST 원칙을 지키는 API다.
- 자원 : 데이터 자체
- 행위 : 자원을 사용하여 처리할 동작
- 표현 : 자원 처리 동작에 대한 표현


- 설계 원칙
- 메서드에 따른 동작을 구분해야 한다.
- HTTP 메서드를 사용하고, 메서드에 대한 응답은 HTTP 상태 코드를 포함해야 한다.
- 계층 구조를 유지해야 한다.
	- /user/1/order/10
- 무상태성(stateless) : 클라이언트로부터 상태가 전달되었을 때
서버는 클라이언트의 상태를 저장하지 않는다.
- 자원은 항상 URI로 표현한다.

- 왜 RESTful API를 써는가
	- 서버 부하를 줄이고 클라이언트와 서버의 효율적인 통신을 위해 사용한다.
	- 서버의 확장에 용이하다.
	- 협업에서 서로 간의 소통을 원활하게 하기 위해서다.
	- 프론트와 백에서 데이터를 주고 받을 때 규칙을 규격화하여 상호작용을 원활하게 해준다.